package com.holystone.orca.sys.mybatis.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.holystone.orca.sys.mybatis.model.SysPrivilege;
import com.holystone.orca.util.MyMapper;

public interface SysPrivilegeMapper extends MyMapper<SysPrivilege> {

	
	public List<SysPrivilege> getStaffPrivilegeList(Map<String, String> map);
	
	/**
	 * 获取权限列表，初始化权限树
	 * @param
	 * @return
	 */
	public List<SysPrivilege> selectAllPrivilege();
	
	/**
	 * 获得所有可用状态的权限
	 * @return
	 */
	public List<SysPrivilege> selectAllOpenPrivilege();
	
	/**
	 * 根据pri_id查询sys_privilege，页面查看角色所拥有的权限
	 * @param priIdList
	 * @return
	 */
	public List<SysPrivilege> selectPrivilegeByPriId(List<Integer> priIdList);
	
	/**
	 * 查询出点击的权限和其子类权限，用于privilege管理页面
	 * @param priId
	 * @return
	 */
	public List<SysPrivilege> selectPrivilegeByPriIdOrPriPid(int priId);
	
	/**
	 * 查询出父类权限信息，用于生成权限信息时显示其父类权限名字
	 * @param list
	 * @return
	 */
	public List<SysPrivilege> selectPrivilegePriName(List<Integer> list);
	
	/**
	 * 添加权限信息
	 * @param sysPrivilege
	 * @return
	 */
	public int addBroPrivilege(SysPrivilege sysPrivilege);
	
	/**
	 * 根据priId查询出当前行数据，用于添加子级节点显示父节点名字
	 * @param priId
	 * @return
	 */
	public List<SysPrivilege> selectParentPrivilegeByPriId(int priId);
	
	/**
	 * 根据priId查询出父节点数据，用于添加同级节点显示父节点名字
	 * @param priId
	 * @return
	 */
	public List<SysPrivilege> selectPriByPriId(int priId);
	
	/**
	 * 添加孩子节点
	 * @param sysPrivilege
	 * @return
	 */
	public int addChildPrivilege(SysPrivilege sysPrivilege);
	
	/**
	 * 修改权限信息
	 * @param sysPrivilege
	 * @return
	 */
	public int editPrivilege(SysPrivilege sysPrivilege);
	
	/**
	 * 点击右侧删除按钮，删除单个权限信息
	 * @param priId
	 * @return
	 */
	public int delPrivilege(int priId);
	
	/**
	 * 多选框选中多个权限信息，删除选中信息
	 * @param list
	 * @return
	 */
	public int delSelectPrivilege(List<Integer> list);
	
	/**
	 * 根据priid查询当前节点的子节点
	 * @param priId
	 * @return
	 */
	public SysPrivilege selectIsParentPri(Integer priId);
	/**
	 * 跟据Url查询权限
	 * @author: 李海宁
	 * @date: 2016年10月24日 上午10:35:40
	 * @param url
	 * @return List SysPrivilege权限结合
	 * @throws Exception
	 */
	public List<SysPrivilege> selectPriviByUrl(String url);
	/**
	 * 修改url的操作权限
	 * @author: 李海宁
	 * @date: 2016年10月24日 上午11:15:16
	 * @param url 
	 * @param actionPri
	 * @return
	 */
	public int editUrlActionPri(@Param("url") String url, @Param("actionPri") String actionPri);
}